package br.com.velp.sudecap.entidade;

import java.util.Date;
import javax.persistence.*;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Bean Responsável Pelo Mapeamento da Tabela AVALIACAO </descricao>
 * </sumario>
 */
@Entity
@Table(name = "AVALIACAO")
public class Avaliacao extends EntityBase{

    public static final Long serialVersionUID = 1L;
    
    @Id
    @SequenceGenerator(name = "SQ_ID_AVAL", sequenceName = "SQ_ID_AVAL", allocationSize = 1)
    @GeneratedValue(generator = "SQ_ID_AVAL")
    @Column(name = "ID_AVALIACAO", nullable = false, unique = true)                
    private Long id;
    
    @Column(name = "USU_CADASTRO", nullable = false)
    private Long idUsuarioCadastro;
    
    @Column(name = "USU_ALTERACAO")
    private Long idUsuarioAlteracao;
    
    @Column(name = "SITUACAO", length = 1)
    private String situacao;
    
    @Column(name = "JUSTIFICATIVA", length = 150)
    private String justificativa;
    
    @Column(name = "AVALIADOR", nullable = false, length = 150)
    private String avaliador;
    
    @Column(name = "AREA_AFETADA", nullable = false)
    private Double areaAfetada;
    
    @Column(name = "VALOR_UNITARIO", nullable = false)
    private Double valorUnitario;
    
    @Column(name = "VALOR_MINIMO")
    private Double valorMinimo;
    
    @Column(name = "VALOR_MEDIO", nullable = false)
    private Double valorMedio;
    
    @Column(name = "VALOR_MAXIMO")
    private Double valorMaximo;
    
    @Column(name = "VALOR_ITBI")
    private Double valorItbi;
    
    @Column(name = "VALOR_ADOTADO")
    private Double valorAdotado;
    
    @Column(name = "VALOR_PLAN_TOTAL", nullable = false)
    private Double valorPlanTotal;
    
    @Column(name = "VALOR_BEM_TOTAL", nullable = false)
    private Double valorBemTotal;
    
    @Column(name = "VALOR_AVAL_TOTAL", nullable = false)
    private Double valorAvalTotal;
    
    @Column(name = "NUMERO_LAUDO", nullable = false, length = 8)
    private Integer numeroLaudo;
    
    @Column(name = "DATA_CADASTRO")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataCadastro;
    
    @Column(name = "DATA_ALTERACAO")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataAlteracao;
    
    @Column(name = "DATA_LAUDO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataLaudo;
    
    @ManyToOne
    @JoinColumn(name = "ID_IMOVEL_EMPREENDIMENTO")
    private ImovelEmpreendimento imovelEmpreendimento;
    
    public Avaliacao() {
    }

    public Avaliacao(Long id) {
	this.id = id;
    }

    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public Long getIdUsuarioAlteracao() {
	return idUsuarioAlteracao;
    }

    public void setIdUsuarioAlteracao(Long idUsuarioAlteracao) {
	this.idUsuarioAlteracao = idUsuarioAlteracao;
    }

    public Long getIdUsuarioCadastro() {
	return idUsuarioCadastro;
    }

    public void setIdUsuarioCadastro(Long idUsuarioCadastro) {
	this.idUsuarioCadastro = idUsuarioCadastro;
    }

    public String getAvaliador() {
	return avaliador;
    }

    public void setAvaliador(String avaliador) {
	this.avaliador = avaliador;
    }

    public String getJustificativa() {
	return justificativa;
    }

    public void setJustificativa(String justificativa) {
	this.justificativa = justificativa;
    }

    public String getSituacao() {
	return situacao;
    }

    public void setSituacao(String situacao) {
	this.situacao = situacao;
    }

    public Integer getNumeroLaudo() {
	return numeroLaudo;
    }

    public void setNumeroLaudo(Integer numeroLaudo) {
	this.numeroLaudo = numeroLaudo;
    }

    public Double getAreaAfetada() {
	return areaAfetada;
    }

    public void setAreaAfetada(Double areaAfetada) {
	this.areaAfetada = areaAfetada;
    }

    public Double getValorAdotado() {
	return valorAdotado;
    }

    public void setValorAdotado(Double valorAdotado) {
	this.valorAdotado = valorAdotado;
    }

    public Double getValorAvalTotal() {
	return valorAvalTotal;
    }

    public void setValorAvalTotal(Double valorAvalTotal) {
	this.valorAvalTotal = valorAvalTotal;
    }

    public Double getValorBemTotal() {
	return valorBemTotal;
    }

    public void setValorBemTotal(Double valorBemTotal) {
	this.valorBemTotal = valorBemTotal;
    }

    public Double getValorItbi() {
	return valorItbi;
    }

    public void setValorItbi(Double valorItbi) {
	this.valorItbi = valorItbi;
    }

    public Double getValorMaximo() {
	return valorMaximo;
    }

    public void setValorMaximo(Double valorMaximo) {
	this.valorMaximo = valorMaximo;
    }

    public Double getValorMedio() {
	return valorMedio;
    }

    public void setValorMedio(Double valorMedio) {
	this.valorMedio = valorMedio;
    }

    public Double getValorMinimo() {
	return valorMinimo;
    }

    public void setValorMinimo(Double valorMinimo) {
	this.valorMinimo = valorMinimo;
    }

    public Double getValorPlanTotal() {
	return valorPlanTotal;
    }

    public void setValorPlanTotal(Double valorPlanTotal) {
	this.valorPlanTotal = valorPlanTotal;
    }

    public Double getValorUnitario() {
	return valorUnitario;
    }

    public void setValorUnitario(Double valorUnitario) {
	this.valorUnitario = valorUnitario;
    }

    public Date getDataAlteracao() {
	return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
	this.dataAlteracao = dataAlteracao;
    }

    public Date getDataCadastro() {
	return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
	this.dataCadastro = dataCadastro;
    }

    public Date getDataLaudo() {
	return dataLaudo;
    }

    public void setDataLaudo(Date dataLaudo) {
	this.dataLaudo = dataLaudo;
    }

    public ImovelEmpreendimento getImovelEmpreendimento() {
	return imovelEmpreendimento;
    }

    public void setImovelEmpreendimento(ImovelEmpreendimento imovelEmpreendimento) {
	this.imovelEmpreendimento = imovelEmpreendimento;
    }

    @Override
    public boolean equals(Object obj) {
	return genericEquals(obj);
    }

    @Override
    public int hashCode() {
	int hash = 3;
	hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
	return hash;
    }
    
}
